package cn.jbit.test.io.bio.server;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 源码学院只为培养优秀的bat程序员而生
 *
 * @author 学员张在成
 * @data 2020/8/10
 *
 *  //阻塞IO(bio)的服务器端
 *  说明：如果把服务器端的接收的字节数组大小改为100kb,客户端发送的字节数组大小为1000kb的话，然后就能看出粘包半包的问题
 *
 */
public class BioServer {

    private  static ServerSocket serverSocket;

    private  static OutputStream oos;

    private  static InputStream is;

    public static void main(String[] args) throws IOException {

        int port=8080;
        //创建服务器端serverScoekt对象
        serverSocket=new ServerSocket();
        serverSocket.bind(new InetSocketAddress(port));
        while (true){
            //建立连接，进行三次握手
            Socket socket=serverSocket.accept();
            //获取输入流
            is=socket.getInputStream();
            //定义一个大小为100kb的字节数组
           byte[] bytes=new byte[100];

            int length=0;
            //轮询进行读取请求
            while ((length=is.read(bytes))>0){
                //length=is.read(bytes);
                System.out.println(length);
                System.out.println("Client send data is ："+new String(bytes));
                oos=socket.getOutputStream();
                oos.write("success".getBytes());
            }
        }
    }
}
